<?php

require_once dirname(__FILE__).'/../lib/mensajeGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/mensajeGeneratorHelper.class.php';

/**
 * mensaje actions.
 *
 * @package    inmobiliaria
 * @subpackage mensaje
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class mensajeActions extends autoMensajeActions
{
  public function executeBatchDistribuir(sfWebRequest $request)
  {
    $ids = $request->getParameter('ids');
 
    $q = Doctrine_Query::create()
      ->from('Mensaje m')
      ->whereIn('m.id', $ids);

    $contMensajes = 0;
    $contDestinatarios =0;
    $contMensajesOviados = 0;
 
    foreach ($q->execute() as $mensaje)
    {
      if ($mensaje->getDistribuido() == false)
      {
        $usuarios = Doctrine_Core::getTable('EspecialidadUsuario')->getUsuarios($mensaje->getEspecialidad());
        $contDestinatarios += $mensaje->enviar($usuarios);
        $contMensajes++;
      }else{
        $contMensajesOviados++;
      }
    } 
    $this->getUser()->setFlash('notice', sprintf(' %d mensaje/s se ha/n distribuido a %d usuarios.', $contMensajes, $contDestinatarios));
    if($contMensajesOviados != 0)
    {
      $this->getUser()->setFlash('error', sprintf('%d mensajes han sido oviados', $contMensajesOviados));
    }
    $this->redirect('mensaje');
  }

  public function executeListDistribuirRestantes(sfWebRequest $request)
  {
    $ids = $request->getParameter('ids');
 
    $q = Doctrine_Query::create()
      ->from('Mensaje m');

    $contMensajes = 0;
    $contDestinatarios =0;
    $contMensajesOviados = 0;
 
    foreach ($q->execute() as $mensaje)
    {
      if ($mensaje->getDistribuido() == false)
      {
        $usuarios = Doctrine_Core::getTable('EspecialidadUsuario')->getUsuarios($mensaje->getEspecialidad());
        $contDestinatarios += $mensaje->enviar($usuarios);
        $contMensajes++;
      }else{
        $contMensajesOviados++;
      }
    } 
    $this->getUser()->setFlash('notice', sprintf(' %d mensaje/s se ha/n distribuido a %d usuarios.', $contMensajes, $contDestinatarios));
    if($contMensajesOviados != 0)
    {
      $this->getUser()->setFlash('error', sprintf('%d mensajes han sido oviados', $contMensajesOviados));
    }
    $this->redirect('mensaje');
  }

  public function executeListDistribuir(sfWebRequest $request)
  {
    $mensajeId = $request->getParameter('id');
    $this->getUser()->setAttribute('mensajeId',$mensajeId , 'admin_module');

    $mensaje = Doctrine_Core::getTable('Mensaje')->find($mensajeId);

    $especialidad = $mensaje->getEspecialidad()->getDescripcion();
    $request->setParameter('especialidad', $especialidad);    

    $this->forward('destinatario', 'index');
  }
}
